package com.share.commons.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import com.share.web.formbean.upload.UploadFileForm;

public class FileUtil {

	/**
	 * 判断是否目录，或目录存不存在
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean isDir(String path) {
		File file = new File(path) ;
		if(file.isDirectory()) {
			return true ;
		} else {
			return false ;
		}
	}
	
	/**
	 * 判读是否文件，或文件存不存在
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean isFile(String path) {
		File file = new File(path) ;
		if(file.isFile()) {
			return true ;
		} else {
			return false ;
		}
	}
	
	//文件不存在则创建
	public static boolean existFile(String path) {
		File file = new File(path) ;
		
		//文件不存在
		if(!file.exists()) {
			try {
				file.createNewFile() ;
				return true ; //文件创建成功
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		//文件创建成功
		return false ;
	}
	
	/**
	 * 如果目录不存在创建目录
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean creDir(String path) {
		File file = new File(path) ;
		
		if(file.mkdirs()) {
			return file.mkdirs() ;
		}
		return false ;
	}
	/**
	 * 如果目录不存在创建目录
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean creDir(File file) {
		if(!file.mkdirs()) {
			return file.mkdirs() ;
		}
		return false ;
	}
	
	public static void main(String[] args) {
		String path = "C:/mail/serupabsc.txt" ;
		existFile(path) ;
		/*File file = new File(path); 
		System.out.println(file.exists());
		System.out.println(!creDir(file));*/
	}
	
	/**
	 * 删除目录
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean delDir(String path) {
		File file = new File(path) ;
		return file.delete() ;
	}
	
	/**
	 * 保存文件
	 * @param fileform UploadFileForm对象
	 * @param saveDir 保存目录
	 * @param fileName 文件名称
	 * @return
	 */
	public static boolean saveFile(UploadFileForm fileform,String saveDir,String fileName) {
		boolean flag = false ;
		if(!creDir(saveDir)) {
			System.out.println("开始上传文件");
			
			FileInputStream fis = null ;
			BufferedInputStream bis = null ;
			FileOutputStream fos = null ;
			BufferedOutputStream bos = null ;
			
			try {
				fis = new FileInputStream(fileform.getFile()) ;
				bis = new BufferedInputStream(fis) ;
				
				fos = new FileOutputStream(saveDir + fileName) ;
				bos = new BufferedOutputStream(fos) ;
				
				byte[] buf = new byte[(int)fileform.getFile().length()] ;
				int len = 0 ;
				while((len = bis.read(buf)) != -1) {
					bos.write(buf, 0, len) ;
				}
				flag = true ;
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				try {
					if(bos != null) {bos.flush() ;bos.close() ;	}
					if(fos != null) {fos.flush() ;fos.close() ;}
					if(bis != null) {bis.close() ;}
					if(fis != null) {fis.close() ;}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		return flag ;
	}
}
